home *** CD-ROM | disk | FTP | other *** search
Wrap
BEGIN { # Sorry, but most awk's are not able to deal with double quotes... doublequote=sprintf("%c",34); #{{{}}} # {{{ specify filenames tokout="ocltoken.h" keyout="autotoken.h" # }}} # {{{ print auto-gen-marks print("/* This file is generated automatically by awk -f tok2kbd_source.awk */\n/* containing list with internal/external name pairs for OCL */") >keyout print("/* This file is generated automatically by awk -f tok2kbd_source.awk */\n/* containing automatically genereted OCL token (keybind) */") >tokout # }}} # {{{ init fixed cmd arg range cmd_range=8 # }}} } #{{{ set fixed cmd arg range /^#define +FIXED_COMMAND_RANGE/ { cmd_range=$3 } #}}} #{{{ comments start with #, so skip $0~/^#/ { next } #}}} #{{{ OCL-KEY $3=="OCL-KEY" { # {{{ print to token list print(" "$1",") >tokout # }}} # {{{ store name for key keys["{ "doublequote $2 doublequote", "doublequote $1 doublequote" }"]=1 if ($4!="") keys["{ "doublequote $4 doublequote", "doublequote $1 doublequote" }"]=1 # }}} } #}}} #{{{ OPP-KEY, add preprocessor name $3=="OPP-KEY" { opps["{ "doublequote $2 doublequote", "doublequote $1 doublequote" }"]=1 if ($4!="") opps["{ "doublequote $4 doublequote", "doublequote $1 doublequote" }"]=1 } #}}} #{{{ set types for command and fixed command $3=="COM" || $3=="COM_I" || $3=="COM_II" || $3=="COM_P" || $3=="COM_IP" || $3=="COM_IIP" || $3=="COM_C" { typ=$3;fix_typ="" } $3=="COM_A" { typ="COM_A";fix_typ="COM" } $3=="COM_ID" { typ="COM_II";fix_typ="COM_I" } $3=="COM_D" { typ="COM_I";fix_typ="COM" } #}}} #{{{ not OCL-KEY or OPP-KEY, handle origami function token $3!="OCL-KEY" && $3!="OPP-KEY" { if (fix_typ!="") { for (i=cmd_range;i>0;i--) { # {{{ store assembler name asms["{ "doublequote $1"_M"i doublequote", "doublequote $1"_M"i doublequote" }"]=1 # }}} # {{{ maybe store command name if ($4!="NONE") funs["{ "doublequote $1"_M"i doublequote", "doublequote $1"_M"i doublequote" }"]=1 # }}} } for (i=0;i<=cmd_range;i++) { # {{{ store assembler name asms["{ "doublequote $1"_"i doublequote", "doublequote $1"_"i doublequote" }"]=1 # }}} # {{{ maybe store command name if ($4!="NONE") funs["{ "doublequote $1"_"i doublequote", "doublequote $1"_"i doublequote" }"]=1 # }}} } } # {{{ store assembler name asms["{ "doublequote $1 doublequote", "doublequote $1 doublequote" }"]=1 # }}} # {{{ maybe store command name if ($4!="NONE") funs["{ "doublequote $4 doublequote", "doublequote $1 doublequote" }"]=1 # }}} } #}}} END { # {{{ end token definition print("# ifdef OS_TOKEN") >tokout print(" OS_TOKEN") >tokout print("# endif") >tokout # }}} # {{{ end name lists # {{{ opps print("name_code singles[]=\n {")>keyout for ( i in opps ) print(" "i",") >keyout print(" { 0,0 }\n };") >keyout # }}} # {{{ funs print("name_code binding_names[]=\n {") >keyout for ( i in funs ) print(" "i",") >keyout print(" { "doublequote"no-operation"doublequote", "doublequote"O_NOP"doublequote" },\n { 0,0 }\n };") >keyout # }}} # {{{ keys print("name_code keytab_names[]=\n {") >keyout for (i in keys ) print(" "i",") >keyout print(" { FILE_STANDARD "doublequote"F"doublequote", "doublequote"INCLUDE"doublequote" },\n# ifdef OS_KB_NAMES\n OS_KB_NAMES\n# endif\n { 0, "doublequote"ERROR"doublequote" },\n };") >keyout # }}} # {{{ asms print("name_code asm_token_names[]=\n {") >keyout for ( i in asms ) print(" "i",") >keyout print(" { "doublequote"O_NOP"doublequote", "doublequote"O_NOP"doublequote" },\n { 0,0 }\n };") >keyout # }}} # }}} }